package com.ruoyi.system.service;

import com.ruoyi.common.annotation.DataSource;
import com.ruoyi.common.enums.DataSourceType;
import com.ruoyi.system.domain.po.*;
import com.ruoyi.system.domain.vo.DmsValueVo;

import java.util.Date;
import java.util.List;
import java.util.Map;

import static com.ruoyi.common.enums.DataSourceType.MASTER;

public interface DmsDataValueService {

    @DataSource(DataSourceType.MASTER)
    void pulling();

    @DataSource(DataSourceType.MASTER)
    boolean isProcessing();
    
    public void insertZdxx(List<DmsValueVo.Zdxx> zdxxList);

    @DataSource(DataSourceType.MASTER)
    void insert(Date startDate, Date endDate, Date lastSyncDate);

    @DataSource(MASTER)
     void extracted(Map<String, BlsZlInfo> zlInfoMap, List<BlsZlInfoRecord> recordList, Map<String, List<PmsPatient>> patientMap);
    /**
     * 手术记录拉取
     */
    @DataSource(DataSourceType.SLAVE)
    List<DmsValueVo.SsjlDto> ssjl();

    @DataSource(DataSourceType.MASTER)
    void deleteDmsSsjl(List<DmsValueVo.SsjlDto> dto, Map<String, Long> map);

    @DataSource(DataSourceType.MASTER)
    void deleteDmsZdxx(List<DmsValueVo.ZdxxInfo> zdxx , Map<String, Long> map);

    @DataSource(DataSourceType.MASTER)
    void deleteDmsCy(List<DmsValueVo.CyInfo> cyInfo, Map<String, Long> map);

    @DataSource(DataSourceType.MASTER)
    Map<String, Long> deleteDmsPatient(List<DmsValueVo.PatientInfo> patientInfoList );

    /**
     * 获取患者基本信息
     * @param hzlshList
     * @return
     */
    @DataSource(DataSourceType.SLAVE)
    List<DmsValueVo.PatientInfo> getPatientInfo(List<String> hzlshList);

    @DataSource(DataSourceType.SLAVE)
    List<DmsValueVo.ZdxxInfo> getZdxx(List<String> hzlshList);

    /**
     * 获取患者出院信息
     * @param hzlshList
     * @return
     */
    @DataSource(DataSourceType.SLAVE)
    List<DmsValueVo.CyInfo> getCyInfo(List<String> hzlshList);

    @DataSource(DataSourceType.SLAVE)
    List<DmsValueVo.Yxjcjl> getCt(List<String> hzlshList);

    @DataSource(DataSourceType.SLAVE)
    List<DmsValueVo.Yizhu> getYizhu(List<String> hzlshList);

    @DataSource(DataSourceType.MASTER)
    void deleteCt(List<DmsValueVo.Yxjcjl> ct, Map<String, Long> map);

    @DataSource(DataSourceType.MASTER)
    void deleteYizhu(List<DmsValueVo.Yizhu> ct, Map<String, Long> map);

    @DataSource(DataSourceType.MASTER)
    void deleteJianyan(List<DmsValueVo.JianYan> ct, Map<String, Long> map);

    @DataSource(DataSourceType.SLAVE)
    List<DmsValueVo.JianYan> getJianYan(List<String> hzlshList);

    @DataSource(DataSourceType.SLAVE)
    List<DmsValueVo.Rs> getRs(List<String> hzlshList);

    @DataSource(MASTER)
    void insertSsxx(List<DmsValueVo.Ssxx> ssxxList);
    @DataSource(MASTER)
    List<PmsPatient> insertHzxx(List<TbHzxxb> tbHzxxbList);
    void insertTbZyRydjmxb(List<TbZyRydjmxb> tbZyRydjmxbs);
    @DataSource(MASTER)
    void insertZyblgy(List<DmsValueVo.Zyblgy> zyblgyList);
    @DataSource(MASTER)
    void insertRybljl(List<DmsValueVo.Rybljl> rybljlList);
    @DataSource(MASTER)
    void insertSwjlxx(List<DmsValueVo.Swjlxx> swjlxxList);
    @DataSource(MASTER)
    void insertTbZyJsmxbs(List<DmsValueVo.TbZyJsmxb> tbZyJsmxbs);
    @DataSource(MASTER)
    void insertGzhcsyjlxx(List<DmsValueVo.Gzhcsyjlxx> gzhcsyjlxxList);
    @DataSource(MASTER)
    void insertGzhcsyjhc(List<DmsValueVo.Gzhcsyjlhc> gzhcsyjlhcList);
    @DataSource(MASTER)
    void insertHrcyjlxx(List<DmsValueVo.Hrcyjlxx> hrcyjlxxList);
    @DataSource(MASTER)
    void insertScbcjlxx(List<DmsValueVo.Scbcjlxx> scbcjlxxList);
    @DataSource(MASTER)
    void insertLcljjxx(List<DmsValueVo.Lcljjlxx> lcljjlxxList);
    @DataSource(MASTER)
    void insertCyxj(List<DmsValueVo.Cyxj> cyxjList);
    @DataSource(MASTER)
    void insertJybgzb(List<DmsValueVo.Jybgzb> jybgzbList);
    @DataSource(MASTER)
    void insertXjjgb(List<DmsValueVo.Xjjgb> xjjgbList);
    @DataSource(MASTER)
    void insertJyjgzbb(List<DmsValueVo.Jyjgzbb> jyjgzbbList);
    @DataSource(MASTER)
    void insertYmhgb(List<DmsValueVo.Ymjgb> ymjgbList);
    @DataSource(MASTER)
    void insertJywdcj(List<DmsValueVo.Jywdcj> jywdcjList);
    @DataSource(MASTER)
    void insertJcwdcj(List<DmsValueVo.Jcwdcj> jcwdcjList);
    @DataSource(MASTER)
    void insertJbxx(List<DmsValueVo.Jbxx> jbxxList);
    @DataSource(MASTER)
    void insertFzxx(List<DmsValueVo.Fzxx> fzxxList);
    @DataSource(MASTER)
    void insertFyxx(List<DmsValueVo.Fyxx> fyxxList);
    @DataSource(MASTER)
    void insertIcuxx(List<DmsValueVo.Icuxx> icuxxList);
    @DataSource(MASTER)
    void insertZyrb(List<DmsValueVo.Zyrb> zyrbList);
    @DataSource(MASTER)
    void insertZyYz(List<DmsValueVo.Yizhu> yizhuList);

    void inserttbZyCydjmxbList(List<DmsValueVo.TbZyCydjmxb> tbZyCydjmxbList);

    void insertTbBlMzblgies(List<DmsValueVo.TbBlMzblgy> tbBlMzblgies);

    void insertSsmx(List<DmsValueVo.TbSsSsmxb> tbSsSsmxbList);

    @DataSource(MASTER)
    void insertMtProgress(List<DmsValueVo.MtProgress> tbSsSsmxbList);
}
